#pragma once
#include "DXAMLCommon.h"
#include "CGeneralTransform.h"


class CRenderTarget;
class CMILMatrix;

class CTransform :
	public CGeneralTransform
{
protected: 
	CTransform(const CTransform & original, HRESULT & hr);
	CTransform();
public: 
	static HRESULT Create(CDependencyObject * * ppObject, CREATEPARAMETERS * pCreate);
	virtual XUINT32 GetTypeIndex() const;
	virtual HRESULT TransformPoints(struct XPOINTF * pptOriginal, struct XPOINTF * pptTransformed, XUINT32 cPoints);
	virtual HRESULT CloneForTarget(CRenderTarget * pRenderTarget, CTransform * * ppTransform) = 0;
	virtual void GetTransform(CMILMatrix * pMatrix) = 0;
	HRESULT Inverse(CGeneralTransform * * ppInverse);
	static HRESULT TryTransform(struct Xcp_IDependencyObject *, XUINT32, CValue *, CValue *);
};